import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
import Layout from '@/layout/Basic/index.vue'
import NProgress from 'nprogress'
import { useAuthStore } from '@/stores/auth.js'

// 静态路由
export const staticRouters = [
  {
    path: '/',
    redirect: '/login',
  },
  {
    path: '/login',
    name: 'login',
    component: () => import('@/views/login/index.vue'),
    meta: {
      title: '系统登录',
    },
  },
  {
    path: '/redirect',
    component: Layout,
    hidden: true,
    children: [
      {
        path: '/redirect/:path(.*)',
        component: () => import('@/views/redirect/index.vue'),
      },
    ],
  },
  {
    name: '',
    path: '',
    component: Layout,
    children: [
      {
        path: '/admin/personalCenter',
        name: 'personalCenter',
        component: () => import('@/views/personalCenter/index.vue'),
        meta: {
          title: '个人中心',
          cache: true,
          componentName: `PersonalCenter`,
          icon: 'el|Avatar',
        },
      },
      // 将匹配所有内容并将其放在 `$route.params.pathMatch` 下
      {
        path: '/:pathMatch(.*)*',
        name: 'NotFound',
        component: () => import('@/views/NotFond.vue'),
        meta: {
          title: 'Not Found',
          icon: 'local|/src/assets/icon/404.svg',
        },
      },
    ],
  },
]

//前端配置的动态路由
export const dynamicRoutes = [
  {
    id: 3,
    createTime: '2023-03-05 21:55:27',
    updateTime: '2025-01-07 15:30:55',
    createBy: 1,
    updateBy: 3,
    roleId: 1,
    parentId: null,
    title: '小程序提交',
    name: 'originalfile',
    path: 'originalfile',
    component: '/src/views/originalfile/index.vue',
    platform: 'web',
    type: 'menu',
    handleType: 'route',
    outerUrl: null,
    icon: 'home',
    order: 1,
    cache: true,
    enabled: true,
  },
  // {
  //   id: 2,
  //   createTime: '2023-03-05 21:55:27',
  //   updateTime: '2025-01-07 15:30:55',
  //   createBy: 1,
  //   updateBy: 3,
  //   roleId: 1,
  //   parentId: null,
  //   title: '工作台',
  //   name: 'home',
  //   path: 'home',
  //   component: '/src/views/home/index.vue',
  //   platform: 'web',
  //   type: 'menu',
  //   handleType: 'route',
  //   outerUrl: null,
  //   icon: 'local|/src/assets/icon/home.svg',
  //   order: 2,
  //   cache: false,
  //   enabled: true,
  //   isHidden: true,
  // },

  {
    id: 4,
    createTime: '2023-03-05 21:55:27',
    updateTime: '2025-01-07 15:30:55',
    createBy: 1,
    updateBy: 3,
    roleId: 1,
    parentId: null,
    title: '事件管理',
    name: 'rulebase',
    path: 'rulebase',
    component: '/src/views/rulebase/index.vue',
    platform: 'web',
    type: 'menu',
    handleType: 'route',
    outerUrl: null,
    icon: 'search-list',
    order: 3,
    cache: false,
    enabled: true,
  },
  // {
  //   id: 5,
  //   createTime: '2023-03-05 21:55:27',
  //   updateTime: '2025-01-07 15:30:55',
  //   createBy: 1,
  //   updateBy: 3,
  //   roleId: 1,
  //   parentId: null,
  //   title: '导出记录',
  //   name: 'exportRecords',
  //   path: 'exportRecords',
  //   component: '/src/views/exportRecords/index.vue',
  //   platform: 'web',
  //   type: 'menu',
  //   handleType: 'route',
  //   outerUrl: null,
  //   icon: 'local|/src/assets/icon/search-list.svg',
  //   order: 3,
  //   cache: false,
  //   enabled: true,
  // },
  // {
  //   id: 6,
  //   createTime: '2023-03-05 21:55:27',
  //   updateTime: '2025-01-07 15:30:55',
  //   createBy: 1,
  //   updateBy: 3,
  //   roleId: 1,
  //   parentId: null,
  //   title: '用户管理',
  //   name: 'role',
  //   path: 'role',
  //   component: '/src/views/role/index.vue',
  //   platform: 'web',
  //   type: 'menu',
  //   handleType: 'route',
  //   outerUrl: null,
  //   icon: 'local|/src/assets/icon/user-group.svg',
  //   order: 3,
  //   cache: false,
  //   enabled: true,
  // },
  // {
  //   id: 6,
  //   createTime: '2023-03-05 21:55:27',
  //   updateTime: '2024-05-05 19:20:37',
  //   createBy: 1,
  //   updateBy: 1,
  //   roleId: 1,
  //   parentId: null,
  //   title: '测试菜单',
  //   name: 'test',
  //   path: 'test',
  //   component: null,
  //   platform: 'web',
  //   type: 'dir',
  //   handleType: null,
  //   outerUrl: null,
  //   icon: 'local|/src/assets/icon/wechat.svg',
  //   order: 10,
  //   cache: true,
  //   enabled: true,
  // },
  // {
  //   id: 7,
  //   createTime: '2023-03-05 21:55:27',
  //   updateTime: '2024-05-05 19:20:37',
  //   createBy: 1,
  //   updateBy: 1,
  //   roleId: 1,
  //   parentId: 6,
  //   title: '测试菜单1111',
  //   name: 'demo',
  //   path: 'demo',
  //   component: '/src/views/demo/index.vue',
  //   platform: 'web',
  //   type: 'menu',
  //   handleType: 'route',
  //   outerUrl: null,
  //   icon: 'local|/src/assets/icon/home.svg',
  //   order: 1,
  //   cache: true,
  //   enabled: true,
  // },
]

const router = createRouter({
  // history: createWebHistory(import.meta.env.BASE_URL),
  history: createWebHashHistory(import.meta.env.BASE_URL),
  routes: staticRouters,
})

router.beforeEach(async (to, from, next) => {
  NProgress.configure({ showSpinner: false })
  NProgress.start()
  const authStore = useAuthStore()
  const path = await authStore.beforeEach(to)
  if (path) next(path)
  else next()
})

router.afterEach((to) => {
  NProgress.done()
})

export default router
